package 和为S的两个数字;

import java.util.ArrayList;

//题目描述
//输入一个递增排序的数组和一个数字S，在数组中查找两个数，使得他们的和正好是S，如果有多对数字的和等于S，
// 输出两个数的乘积最小的。
//输出描述:
//对应每个测试案例，输出两个数，小的先输出。
public class Solution
{
    public ArrayList<Integer> FindNumbersWithSum(int [] array, int sum)
    {
        //判断输入
        ArrayList<Integer> res=new ArrayList<>(2);
        if (array==null||array.length==0)
            return res;
        //创建双指针
        int p1=0;
        int p2=array.length-1;
        //创建输出

        while (p1<p2)
        {
            long ss=array[p1]+array[p2];
            if (ss==sum)
            {
                if (res.size()==0)
                {
                    res.add(array[p1]);
                    res.add(array[p2]);
                }
                if (res.get(0) * res.get(1) > array[p1] * array[p2]) {
                    res.set(0, array[p1]);
                    res.set(1, array[p2]);
                }
                p1++;
            }
            else if (ss>sum)
            {
                p2--;
            }
            else
            {
                p1++;
            }
        }
        return res;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] test=new int[]{1,2,4,7,11,15};
        System.out.println(solution.FindNumbersWithSum(test,15));
    }
}
